home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cdity / ModeProSrc.lha / Daemon / Unnamed1 / 40beta / MPReadArgs.c < prev    next >
C/C++ Source or Header  |  1996-06-12  |  3KB  |  129 lines

  1. #include <proto/dos.h>
  2. #include "MP.h"
  3.  
  4. BOOL    GetReadArgs(void);
  5. BOOL    RAYesNo(STRPTR Str, BOOL DefVal);
  6. ULONG   RAInt(ULONG *Val,ULONG DefVal);
  7. STRPTR  RAString(STRPTR Str, STRPTR DefVal);
  8. BOOL    GetToolTypes(int argc, char **argv);
  9.  
  10. struct RDArgs *RArgs;
  11.  
  12. UBYTE DefPrefsPath[]="sys:prefs/ModeProPrefs";
  13.  
  14. UBYTE RATemplate[]="CX_PRIORITY/N/K,CX_POPKEY/K,CX_POPUP/K,"
  15.                    "NLM=NEWLOOKMENUS/S,"
  16.                    "CPROG=CATCH_NEWPROGRAMS/S,CSCR=CATCH_NEWSCREENS/S,CPOP=CATCH_POPUP/S,"
  17.                    "PCMD=PREFSCOMMAND/K";
  18.  
  19. LONG RAResults[10]={0};
  20.  
  21. #define CX_PRIORITY 0
  22. #define CX_POPKEY   1
  23. #define CX_POPUP    2
  24. #define NLM         3
  25. #define CPROG       4
  26. #define CSCR        5
  27. #define CPOP        6
  28. #define PREFS       7
  29.  
  30. BOOL GetArgs(int argc, char **argv)
  31. {
  32.   if(argc) //cli
  33.     return(GetReadArgs());
  34.   return(GetToolTypes(argc,argv));
  35. }
  36.  
  37. void CleanupArgs(int argc)
  38. {
  39.   if(argc)//cli
  40.   { 
  41.     if(RArgs)
  42.       FreeArgs(RArgs);
  43.   }
  44.   else
  45.     ArgArrayDone();
  46. }
  47.  
  48. extern struct MPSem MPSem;
  49. extern UBYTE  *Hotkey,Popup;
  50. extern BYTE   Priority;
  51. extern STRPTR PrefsPath;
  52.  
  53. BOOL GetReadArgs(void)
  54. {
  55.   if(RArgs=ReadArgs(RATemplate,RAResults,0))
  56.   {
  57.     Hotkey      =RAString((STRPTR)RAResults[CX_POPKEY],Hotkey);
  58.     Popup       =RAYesNo((STRPTR)RAResults[CX_POPUP],Popup);
  59.     Priority    =RAInt  ((ULONG *)RAResults[CX_PRIORITY],Priority);  
  60.     MPSem.EnabledNLM    =RAResults[NLM];
  61.     MPSem.CatchPrograms =RAResults[CPROG];
  62.     MPSem.CatchScreens  =RAResults[CSCR];
  63.     MPSem.CatchPopup    =RAResults[CPOP];
  64. //    UserFontName=RAResults[FNAME];
  65. //    UserFontSize=RAInt  (RAResults[FSIZE],8);
  66.     PrefsPath       =RAString((STRPTR)RAResults[PREFS],DefPrefsPath);
  67.  
  68.  
  69.     return(TRUE);
  70.   }
  71.   else
  72.     PrintFault(IoErr(),0);
  73.   return(FALSE);
  74. }
  75.  
  76. BOOL RAYesNo(STRPTR Str, BOOL DefVal)
  77. {
  78.   if(Str)
  79.   {
  80.     switch(*Str)
  81.     {
  82.       case 'T':
  83.       case 't':
  84.       case 'Y':
  85.       case 'y':
  86.         return(~0);
  87.       case 'F':
  88.       case 'f':
  89.       case 'N':
  90.       case 'n':
  91.         return(0);
  92.     }
  93.   }
  94.   return(DefVal);
  95. }
  96.  
  97. ULONG RAInt(ULONG *Val,ULONG DefVal)
  98. {
  99.   if(Val)
  100.     return(*Val);
  101.   return(DefVal);
  102. }
  103.  
  104. STRPTR RAString(STRPTR Str, STRPTR DefVal)
  105. {
  106.   if(Str)
  107.     return(Str);
  108.   return(DefVal);
  109. }    
  110.  
  111. BOOL GetToolTypes(int argc, char **argv)
  112. {
  113.   UBYTE **ttypes;
  114.  
  115.   ttypes  =ArgArrayInit(argc,argv);
  116.     
  117.   Hotkey  =ArgString(ttypes,(UBYTE *)"CX_POPKEY",(UBYTE *)"lcommand p");
  118.   Priority=ArgInt   (ttypes,(UBYTE *)"CX_PRIORITY",0);
  119.   Popup   =ArgYesNo (ttypes,(UBYTE *)"CX_POPUP",TRUE);
  120.   MPSem.EnabledNLM=ArgYesNo(ttypes,(UBYTE *)"NEWLOOKMENUS",FALSE);
  121.   MPSem.CatchPrograms =ArgYesNo (ttypes,(UBYTE *)"CATCH_NEWPROGRAMS",FALSE);
  122.   MPSem.CatchScreens  =ArgYesNo (ttypes,(UBYTE *)"CATCH_NEWSCREENS",FALSE);
  123.   MPSem.CatchPopup    =ArgYesNo (ttypes,(UBYTE *)"CATCH_POPUP",FALSE);
  124.   //UserFontName=ArgString(ttypes,(UBYTE *)"FONT_NAME",0);
  125.   //UserFontSize=ArgInt   (ttypes,(UBYTE *)"FONT_SIZE",8);
  126.   PrefsPath   =ArgString    (ttypes,(UBYTE *)"PREFSCOMMAND",DefPrefsPath);
  127.   return((BOOL)ttypes);
  128. }
  129.